"""URL configuration for fresh_chain_backend project.

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/4.2/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  path('', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.urls import include, path
    2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path, include
from django.views.generic import RedirectView
from rest_framework.routers import DefaultRouter
from rest_framework_simplejwt.views import TokenObtainPairView, TokenRefreshView
from drf_yasg.views import get_schema_view
from drf_yasg import openapi
from rest_framework import permissions
from django.conf import settings
from django.conf.urls.static import static

from users.views import UserViewSet, DeliveryStaffViewSet
from products.views import ProductViewSet, CategoryViewSet
from orders.views import OrderViewSet
from delivery.views import DeliveryAreaViewSet, DeliverymanAreaViewSet, DeliveryTaskViewSet, DeliveryStatusRecordViewSet
from warehouse.views import WarehouseViewSet, InventoryViewSet, InventoryRecordViewSet, PurchaseOrderViewSet

schema_view = get_schema_view(
    openapi.Info(
        title="Fresh Chain API",
        default_version='v1',
        description="Fresh Chain Supply System API",
    ),
    public=True,
    permission_classes=(permissions.AllowAny,),
)

router = DefaultRouter()
router.register(r'users', UserViewSet)
router.register(r'delivery-staff', DeliveryStaffViewSet)
router.register(r'products', ProductViewSet)
router.register(r'categories', CategoryViewSet)
router.register(r'orders', OrderViewSet)
router.register(r'delivery-areas', DeliveryAreaViewSet)
router.register(r'deliveryman-areas', DeliverymanAreaViewSet)
router.register(r'delivery-tasks', DeliveryTaskViewSet)
router.register(r'delivery-status-records', DeliveryStatusRecordViewSet)
router.register(r'warehouses', WarehouseViewSet)
router.register(r'inventory', InventoryViewSet)
router.register(r'inventory-records', InventoryRecordViewSet)
router.register(r'purchase-orders', PurchaseOrderViewSet)

urlpatterns = [
    # 添加根URL路由，重定向到Swagger文档
    path('', RedirectView.as_view(url='/swagger/', permanent=False), name='index'),
    path('admin/', admin.site.urls),
    path('api/', include(router.urls)),
    path('api/dashboard/', include('dashboard.urls')),
    # 添加这一行来包含delivery应用的urls
    path('api/', include('delivery.urls')),
    path('api/token/', TokenObtainPairView.as_view(), name='token_obtain_pair'),
    path('api/token/refresh/', TokenRefreshView.as_view(), name='token_refresh'),
    path('swagger/', schema_view.with_ui('swagger', cache_timeout=0), name='schema-swagger-ui'),
    path('redoc/', schema_view.with_ui('redoc', cache_timeout=0), name='schema-redoc'),
    # 添加销售订单的别名路由
    path('api/sales-orders/', include('orders.urls')),
]

# 在urlpatterns列表的末尾添加
if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
